• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

CSV importeren vba

Status
Niet open voor verdere reacties.

SDaniels

Gebruiker
Lid geworden
10 mei 2012
Berichten
15
Beste,

Voor analyses importeer ik regelmatig CSV bestanden.
Hiervoor zou ik heel graag een macro willen gebruik aangezien er elke dag een csv bestand gemaakt wordt.
Echter ben ik niet in staat om hiervoor een passende oplossing te schrijven.

Ik hoop dat 1 van jullie vba genieën dit voor mekaar krijgt. Hiervoor ben ik jullie eeuwig dankbaar.
Start macro --> selecteer csv bestanden --> worden in database bijgevoegd
Hierbij inachtnemen:
1. enkel de "gevraagde" kolommen moeten worden geimporteerd (kolommen welke voorkomen in het bestandje database)

Ik heb al geprobeerd een samenvoeging te maken van 2 macro's van Ron de Bruin. Mijn vba niveau is helaas nog te laag om dit goed te begrijpen.
http://www.rondebruin.nl/csv.htm
http://www.rondebruin.nl/txtcsv.htm

Ik kan geen CSV bestandje toevoegen als bijlage. Daarom is het log toegevoegd aan het database bestand. In de praktijk staat het log op de server.

Alvast mijn dank voor jullie reacties.

Groeten Sander
 

Bijlagen

gebruik deze macro in werkboek Database.xlsx

Code:
Sub snb()
    with Workbooks.Open("G:\OF\log.csv")
      .Sheets(1).Cells(1).CurrentRegion.resize(, 13).Copy Workbooks("Database.xlsx").Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
      .close false
    end with
End Sub
 
Laatst bewerkt:
Beste SNB,

Ik ben vergeten te zeggen dat het bestand altijd een andere naam heeft: log_120621 (log_jjmmdd)
Daarnaast wil ik graag de mogelijkheid hebben om de te importeren bestanden te selecteren (zoals in de Get text macro van Ron de Bruin)
 
Aanvulling van de snb Sub

Code:
Sub snb()
    Dim csvFile As String
    csvFile = Application.GetOpenFilename("CSV Bestanden (*.csv), *.csv")

    with Workbooks.Open(csvFile)
      .Sheets(1).Cells(1).CurrentRegion.resize(, 13).Copy Workbooks("Database.xlsx").Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
      .close false
    end with
End Sub
 
Laatst bewerkt:
of zelfs:

Code:
Sub snb()
     with Workbooks.Open(Application.GetOpenFilename("CSV Bestanden (*.csv), *.csv"))
      .Sheets(1).Cells(1).CurrentRegion.resize(, 13).Copy thisworkbook.Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
      .close false
    end with
End Sub

Maar dit zou mijn voorkeur hebben:

Code:
Sub snb()
  With GetObject(Application.GetOpenFilename("CSV Bestanden (*.csv), *.csv"))
    .Sheets(1).Cells(1).CurrentRegion.Resize(, 13).Copy ThisWorkbook.Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .Close False
  End With
End Sub
 
Laatst bewerkt:
Rome is een mooi stad ;)
 
Wooh! Bedankt voor de geweldige macro's. Ik had niet verwacht dat ze zo kort zouden zijn (door die van Ron de Bruin)
Hij is nu bijna helemaal naar mijn wens... nog 1 klein dingetje.
1e regel (kolomkoppen) hoeven niet geimporteerd te worden. Hoe kan ik dat aanpassen?
 
Maak VBA niet gecompliceerder dan het is:

Code:
Sub snb()
  With GetObject(Application.GetOpenFilename("CSV Bestanden (*.csv), *.csv"))
    .Sheets(1).Cells(1).CurrentRegion.Resize(, 13[COLOR="#FF0000"]).offset(1)[/COLOR].Copy ThisWorkbook.Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .Close False
  End With
End Sub


@edm
met vele viae (Appia, Francigena, etcetera): cum viis multis ;)
 
Top! Ik probeer nu die multiselect toe te voegen maar hij geeft een foutmelding.
Wat doe ik fout?

Code:
Sub snb()
  With GetObject(Application.GetOpenFilename("CSV Files (*.csv), *.csv", MultiSelect = True))
      .Sheets(1).Cells(1).CurrentRegion.Resize(, 14).Offset(1).Copy ThisWorkbook.Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
    .Close False
  End With
End Sub
 
Laatst bewerkt door een moderator:
Plaats je VBA code svp tussen code tags.

Code:
Sub snb()
  For Each it In Application.GetOpenFilename("CSV Files (*.csv), *.csv", , , , True)
    With GetObject(it)
      .Sheets(1).Cells(1).CurrentRegion.Resize(, 14).Offset(1).Copy ThisWorkbook.Sheets("Database").Cells(Rows.Count, 1).End(xlUp).Offset(1)
      .Close False
    End With
  Next
End Sub
 
Mijn excuses. Ik ben nog nieuw op deze website.
SNB je bent echt een topper! Deze macro zal zoveel tijd schelen. Hartelijk dank voor je hulp!
 
@bikerron Vraag verwijderd. Graag een eigen vraag maken. Het is niet toegestaan in iemand anders zijn vraag jouw probleem te plaatsen. Dit is onoverzichtelijk voor de helpers maar vooral voor de topicstarter.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan